/*
 * layui的初始化模块可以理解为，引入这个模块的js文件
 * 值得注意的是：layui的模块之间存在依赖关系，例如引入了table模块，它会layui/lay/moudules/table.js
 * 这个文件引入进来，并且它还会将这个模块所依赖的其他模块自动加入进来，
 * 实际引入的模块有：table、form、jquery、layer、laypage、laytpl、util，7个js文件
 * 所以我仅仅初始化了table模块，却能获得form、jquery、layer的模块对象
 */
//layui初始化表格模组
layui.use([ 'element', 'table','layer','laydate' ], function() {
	//表格数据，jquery，Tab的切换功能，切换事件监听等，需要依赖element模块
	var $ = layui.jquery
			, table = layui.table
			, form = layui.form
			,layer = layui.layer
			,element = layui.element
			,laydate = layui.laydate;
  
  //数据表格渲染
  var cooperationTable = table.render({
    elem: '#cooperationTable'
    ,url:'system/cooperations'
    ,method: 'get'
    ,where: {} // 你额外要携带数据，以键值对的方式存入
    ,toolbar: '#cooperationToolbar' // 开启头部工具栏，并为其绑定左侧模板
    ,cellMinWidth: 80 // 全局定义所有常规单元格的最小宽度（默认：60）
    ,cols: [[
      {type:'numbers'} // 序号
      ,{type: 'checkbox'} // 复选框
      //,{field:'cooperationId', title:'合作网络Id'}
      ,{field:'cooperationCode', title:'合作网络代码'}
      ,{field:'cooperationName', title:'合作网络名'}
      ,{field:'delayStandard', title:'晚点标准'}
      ,{field:'cancellationMark', title: '作废标志'}
      ,{field:'updateTime', title:'修改时间', templet: function(d){
    	  console.log(d)
    	  return layui.util.toDateString(d.updateTime, "yyyy-MM-dd HH:mm:ss");
      }}
      ,{fixed: 'right', align: 'useable', title:'是否可用', width:100, templet: '#checkboxTpl', unresize: true}
    ]]
    ,page: true // 开启分页
    ,limit: 10 // 每页显示的条数
    ,limits: [5,10,20,50,100] // 每页条数的选择项
    ,loading: true // 是否显示加载条(切换分页的时候显示）
    ,title: '网点数据表' // 定义 table 的大标题（在文件导出等地方会用到）
    //,id: 'cooperationTable' // 设定容器唯一 id
    ,even: false // 隔行变色
  });

  //头部搜素表单提交
  form.on('submit(cooperationSearchBtn)', function(data){
	  console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
	  console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
	  console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
	  //执行后台代码
	  var data = data.field;
	  //刷新数据表格
	  table.reload('cooperationTable', {//执行重载
			url : 'system/cooperations',
			where:{
				cooperationName : $("#cooperationName").val(),
				cancellationMark : $("#cancellationMark").val(),
				useable : $("#useable").val(),
			},
			page: {
				    curr: 1 //重新从第 1 页开始
				  }
			//,limit:10
		});
	 
	  table.reload('cooperationTable', {url : 'system/cooperations'});
	  return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
  });
  
  //重置
  $("#reset").click(function(){
	  cooperationTable.reload( {//执行重载
			where:{
				cooperationName : null,
				cancellationMark : null,
				useable : null,
			},
			page: {
				    curr: 1 //重新从第 1 页开始
				  }
			//,limit:10
		});
  })
  
  //新增表单提交
  form.on('submit(addCooperationBtn)', function(data){
	  console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
	  console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
	  console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
	  //执行后台代码
	  $.ajax({
			type:'post',
			async:false,
			url:'system/cooperation',
			data: {
				cooperationCode: data.field.cooperationCode,
				cooperationName: data.field.cooperationName,
				delayStandard: data.field.delayStandard,
				cancellationMark: data.field.cancellationMark,
				updateTime: new Date(data.field.updateTime),
			},
			success:function(data){
				//关闭页面上所有类型的所有弹框
				layer.closeAll();
				if(data==true){
					layer.msg( "添加成功！", {
						icon : 1, //图标，可输入范围0~6 
						time : 2000
					//2秒关闭（如果不配置，默认是3秒）
					});
				}else{
					layer.msg("添加失败！", {
						icon : 1, //图标，可输入范围0~6
						time : 2000
					//2秒关闭（如果不配置，默认是3秒）
					});
				}
				
			}
		});
		//刷新数据表格
		table.reload('cooperationTable', {url : 'system/cooperations'});
		return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
  });
  
  //修改表单提交
  form.on('submit(updateCooperationBtn)', function(data){
	  console.log(data.elem) //被执行事件的元素DOM对象，一般为button对象
	  console.log(data.form) //被执行提交的form对象，一般在存在form标签时才会返回
	  console.log(data.field) //当前容器的全部表单字段，名值对形式：{name: value}
	
	  //执行后台代码
	  $.ajax({
			type: 'POST',
			async: false,
			url: 'system/cooperation',
			data: {
				cooperationId: data.field.cooperationId,
				cooperationCode: data.field.cooperationCode,
				cooperationName: data.field.cooperationName,
				delayStandard: data.field.delayStandard,
				cancellationMark: data.field.cancellationMark,
				updateTime: new Date(data.field.updateTime),
				_method: "PUT"
			},
			success:function(data){
				//关闭页面上所有类型的所有弹框
				layer.closeAll();
				if(data==true){
					layer.msg( "修改成功！", {
						icon : 1, //图标，可输入范围0~6
						time : 2000
					//2秒关闭（如果不配置，默认是3秒）
					});
				}else{
					layer.msg("修改失败！", {
						icon : 1, //图标，可输入范围0~6
						time : 2000
					//2秒关闭（如果不配置，默认是3秒）
					});
				}
			}
		});
	  //刷新数据表格
	  table.reload('cooperationTable', {url: 'system/cooperations'});
	  return false; //阻止表单跳转。如果需要表单跳转，去掉这段即可。
  });
  
  //头工具栏事件
  table.on('toolbar(cooperationTableEvent)', function(obj){
	 //获取当前表格选中状态和选中的数据
	var checkStatus = table.checkStatus(obj.config.id);
	//区分点击的按钮
    switch(obj.event){
      case 'addCooperation':
    	  //弹出新增模态框
    	  initAddCooperationModal();
      break;
      case 'updateCooperation':
    	  //选择的数据数量
    	  if (checkStatus.data.length > 1) {
    		  //layer.alert('最多也只能选择一行');
    		  layer.msg( "最多只能选择一行进行修改", {
					icon : 1, //图标，可输入范围0~6
					time : 2000
				//2秒关闭（如果不配置，默认是3秒）
				});
    	  } else if (checkStatus.data.length < 1) {
    		  //layer.alert('最少要选择一行');
    		  layer.msg( "最少要选择一行进行修改", {
					icon : 1, //图标，可输入范围0~6
					time : 2000
				//2秒关闭（如果不配置，默认是3秒）
				});
    	  } else {
    		  //弹出修改模态框，传递当前选中的一行数据过去
    		  initUpdateCooperationModal(checkStatus.data[0]);
    	  }
      break;
      case 'frozenCooperation':
			//当前选中行的数据
			var data = checkStatus.data;
			
			//定义一个要删除的所有资源ID的字符串
			var cooperationIdStr = "";
			//遍历传递过来的要删除的数据
			for (var i = 0; i < data.length; i++) {
				if (data[i].useable == "N") {
					layer.msg( "您选择的目标用户中有已被禁用的！", {
						icon : 1, //图标，可输入范围0~6
						time : 2000
					//2秒关闭（如果不配置，默认是3秒）
					});
					return;
				}
				//拿出资源ID进行拼接
				cooperationIdStr += data[i].cooperationId + ",";
			}
			//截取掉因为拼接产生的多余的一个逗号
			cooperationIdStr = cooperationIdStr.substring(0, cooperationIdStr.length - 1);
			frozenORrecoverCooperation(cooperationIdStr, "N");
			break;
      case 'recoverCooperation':
			//当前选中行的数据
			var data = checkStatus.data;
			
			//定义一个要删除的所有资源ID的字符串
			var cooperationIdStr = "";
			//遍历传递过来的要删除的数据
			for (var i = 0; i < data.length; i++) {
				if (data[i].useable == "Y") {
					layer.msg( "您选择的目标用户中有已被还原的！", {
						icon : 1, //图标，可输入范围0~6
						time : 2000
					//2秒关闭（如果不配置，默认是3秒）
					});
					return;
				}
				//拿出资源ID进行拼接
				cooperationIdStr += data[i].cooperationId + ",";
			}
			//截取掉因为拼接产生的多余的一个逗号
			cooperationIdStr = cooperationIdStr.substring(0, cooperationIdStr.length - 1);
			
			frozenORrecoverCooperation(cooperationIdStr, "Y");
			break;
    };
  });
  
  //监听工具条 
  table.on('tool(cooperationTableEvent)', function(obj){
    var data = obj.data; //获得当前行数据
    var layEvent = obj.event; //获得 lay-event 对应的值（也可以是表头的 event 参数对应的值）
    if(layEvent === 'del'){ //删除
      layer.confirm('确认删除吗？', function(index){
    	//把当前要删除的数据放入数组，因为删除方法要的是一个数组对象
    	var objArray = new Array(data);
        //调用删除方法，传递要删除的行的数据
    	frozenCooperation(objArray);
        //关闭当前页面
        layer.close(index);
      });
    } else if(layEvent === 'edit'){ //编辑
      //弹出修改模态框，传递当前选中的一行数据过去
      initUpdateCooperationModal(data);
    }
  });
  
  	//监听数据表格右侧冻结还原开关操作
	form.on('switch(useable)', function(obj) {
		//调用方法
		frozenORrecoverCooperation(obj.value, this.checked == true ? "Y" : "N");
	});

	//关闭模态框 新增和修改模态框共用这个点击事件
	$(".modalClose").click(function(){
		//关闭页面上所有类型的所有弹框
		layer.closeAll();
	});
  
  var frozenORrecoverCooperation = function(cooperationIdStr, useable){
		//定义提示信息, 状态
		var msg;
		if (useable == "Y") {
			msg = "还原";
		} else {
			msg = "冻结";
		}
		//发送异步请求冻结或还原资源
		$.ajax({
			async : false, //默认为true，false表示同步，如果当前请求没有返回则不执行后续代码
			type : "post",
			url : 'system/cooperation',
			data : {
				cooperationId: cooperationIdStr,
				useable: useable,
				_method: 'DELETE'
			},
			datatype : 'json',
			success : function(result) {
				if (result == true) {
					layer.msg(msg + "成功！", {
						icon : 1, //图标，可输入范围0~6
						time : 2000 //2秒关闭（如果不配置，默认是3秒）
					});
				} else {
					layer.msg(msg + "失败！", {
						icon : 2,
						time : 2000
					});
				}
				//刷新数据表格
				table.reload('cooperationTable', {url: 'system/cooperations'});
			}
		});
	} 
  
  //初始化新增模态框
  var initAddCooperationModal = function(){
	  //弹出一个页面层
	  layer.open({
		  type: 1 // 基本层类型0~4，1为页面层
		  ,title: '添加角色' // 标题
		  ,area: ['400px', '400px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
		  ,content: $("#addCooperationModal") // 文本、html都行
	      ,anim: 0 // 弹出动画
		  ,resize: false // 是否允许拉伸
		  ,end : function(){ // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
			  //清空表单
			
    		  $("#addCooperationForm")[0].reset();
		  }    
	  });
	  
	  //执行一个laydate实例
	  laydate.render({
	    elem: '#addCooperationModal #updateTime' //指定元素
	    ,type: 'datetime'
	  });
	  
	  laydate.render({
		elem: '#addCooperationModal #delayStandard' //指定元素
		,type: 'time'
	   });
	  
  }
  
  //初始化修改模态框
  var initUpdateCooperationModal = function(data){
	  //弹出一个页面层
	  layer.open({
		  type: 1 // 基本层类型0~4，1为页面层
		  ,title: '修改资源' // 标题
		  ,area: ['400px', '400px'] // 宽高 只写一个参数就是表示宽度，高度会自适应
		  ,content: $("#updateCooperationModal") // 文本、html都行
		  ,anim: 0 // 弹出动画
		  ,resize: false // 是否允许拉伸
		  ,end : function(){ // 弹出层销毁时的回调函数（不论何种方式，只要关闭了就执行）
			  //清空表单
    		  $("#updateCooperationForm")[0].reset();
		  }    
	  });
	  
	  //表单赋值
	  form.val('updateCooperationForm', {
		  "cooperationId": data.cooperationId
	      ,"cooperationCode": data.cooperationCode
	      ,"cooperationName": data.cooperationName
	      ,"delayStandard": data.delayStandard
	      ,"cancellationMark": data.cancellationMark
	      ,"updateTime": data.updateTime
	      ,"useable": data.useable
	  });
	  
	//执行一个laydate实例
	  laydate.render({
	    elem: '#updateCooperationModal #updateTime' //指定元素
	    ,type: 'datetime'
	  });
	  
	  laydate.render({
		elem: '#updateCooperationModal #delayStandard' //指定元素
		,type: 'time'
	   });
  }
  
});
